草庐IT

java - 为什么 ThreadPoolExecutor 的参数是 BlockingQueue?

全部标签

ruby - 什么时候使用 MiniTest::Unit::TestCase 与 MiniTest::Spec?

我一直在使用MiniTest学习TDD/BDD。我想弄清楚的是我的代码的哪些部分应该使用MiniTest::Unit::TestCase进行测试,哪些部分应该使用MiniTest::Spec进行测试。我了解单元测试和集成测试之间的区别,我似乎无法从网络上的示例中掌握的是TestCase和Spec是否都是单元测试,或者TestCase是否用于单元测试以及用于集成测试的规范?我是否应该在MiniTest::Unit::TestCase类中保留我的快速单元测试,在MiniTest::Spec期望中保留更长时间的集成测试,后者更经常描述功能?这有关系吗,还是个人喜好问题?

ruby - 为什么 == 比 eql 快?

我在String类的文档中读到eql?是一个严格的相等运算符,没有类型转换,而==是一个试图转换的相等运算符其次,它的参数是一个字符串,而且,这个方法的C源代码确认:eql?源代码:staticVALUErb_str_eql(VALUEstr1,VALUEstr2){if(str1==str2)returnQtrue;if(TYPE(str2)!=T_STRING)returnQfalse;returnstr_eql(str1,str2);}==源代码:VALUErb_str_equal(VALUEstr1,VALUEstr2){if(str1==str2)returnQtrue;if

ruby - 如果我在单独的 Ruby 线程中进行任何密集计算,为什么 Ruby 1.9 GUI 会挂起?

Ruby1.9应该有本地线程,如果某些线程进入本地代码(比如GUI工具包主循环或某些Ruby库的C实现),GIL应该会提升。但是,如果我开始遵循在主线程中显示GUI的简单代码示例,并在单独的线程中执行一些基本数学运算-GUI会严重挂起,请尝试调整窗口大小以自己查看。我检查了不同的GUI工具包Qt(qtbindingsgem)——它的行为完全相同。在Windows7和OSX10.7上使用Ruby1.9.3-p0测试require'tk'require'thread'Thread.new{loop{a=1}}TkRoot.new.mainloop()Python中的相同代码运行良好,没有任

ruby - 如何处理 Ruby OptionParser 中缺少的强制参数?

在OptionParser中,我可以强制选择一个选项,但如果我省略该值,它将采用任何后续选项的名称作为值,从而搞砸其余的命令行解析。这是一个与选项值相呼应的测试用例:$./test_case.rb--inputfoo--outputbaroutputbarinputfoo现在省略第一个选项的值:$./test_case.rb--input--outputbarinput--output有什么方法可以防止它以另一个选项名称作为值吗?谢谢!这是测试用例代码:#!/usr/bin/envrubyrequire'optparse'files=Hash.newoption_parser=Opti

ruby - 是什么触发了关于第一个参数不明确的 Ruby 警告?

在Ruby1.9.1中,如果你这样做$VERBOSE=trueputs/m/,42.to_s或者如果我这样做$VERBOSE=trueputs/m/,"42"你收到警告warning:ambiguousfirstargument;putparenthesesorevenspaces但我不明白$VERBOSE=trueputs"m",42.to_s或$VERBOSE=trueputs(/m/,42.to_s)那么具体是什么触发了这个警告?我还可以在原始表达式中添加哪些空格? 最佳答案 “问题”是/可以表示除法或正则表达式。该消息是通用

ruby - 在 Ruby 中卡住 Symbols 和 Numbers 的用途或效果是什么?

在Ruby1.9中你可以有Fixnum,Float,和Symbol未卡住或卡住的值:irb(main):001:0>a=[17,42.0,:foo];a.map(&:frozen?)=>[false,false,false]irb(main):002:0>a.each(&:freeze);a.map(&:frozen?)=>[true,true,true]我了解卡住字符串、数组或其他可变数据类型的实用性。然而,据我所知,Fixnum,Symbol,和Float实例从一开始就是不可变的。是否有任何理由卡住它们(或者Ruby不会报告它们的任何原因frozen?请注意,在Ruby2.0中Fi

ruby - "(...) interpreted as grouped expression"是什么意思?

我在Atom中使用Rubylinter,对于某些行,它会发出以下警告:(...)interpretedasgroupedexpression获取此警告的行示例如下:elsifnot(params[:vacancy].nil?orparams[:vacancy]['company_id'].nil?orparams[:vacancy]['company_id']=="0")应该如何改进该行以使警告消失? 最佳答案 警告是(...)interpretedasgroupedexpression它的意思就是它所说的:在Ruby中,圆括号可以

ruby - 为什么 `return a or b` 在 Ruby 中是空值表达式错误?

这很好:deffooaorbend这也很好:deffooreturna||bend这将返回空值表达式:deffooreturnaorbend为什么?它甚至没有被执行;它没有通过语法检查。voidvalueexpression是什么意思? 最佳答案 returnaorb被解释为(returna)orb,因此returna的值对于计算(returna)或b的值,但由于return永远不会在原地留下一个值(因为它从那个位置转义),所以它不是为了返回有效值而设计的在原来的位置。因此,整个表达式只剩下(some_void_value)或b,并

ruby - 在 Ruby 中,为什么等于 nil ("Date.new == nil") 返回 nil?

今天写一些rspec时,我遇到了一些意外的行为,将日期(和时间)实例与nil进行比较。这是一个使用原始ruby​​的示例(没有Rails或其他库):user@MacBook-Work~$ruby-vruby1.8.7(2008-08-11patchlevel72)[universal-darwin10.0]user@MacBook-Work~$irb>>1==nil=>false>>"string"==nil=>false>>:sym==nil=>false>>false==nil=>false>>[]==nil=>false>>{}==nil=>false>>Proc.new{}==

ruby - 我如何混入 Singleton 来创建一个接受初始化参数的类?

我已经了解了如何将类定义为单例(howtocreateasingletoninRuby):require'singleton'classExampleincludeSingletonend但是如果我想在初始化单个实例时将一些参数传递给#new怎么办?示例应始终初始化某些属性。例如,假设我有一个类,其唯一目的是记录到一个文件,但它需要一个要记录到的文件的名称才能工作。classMyLoggerdefinitialize(file_name)@file_name=file_nameendend我怎样才能使MyLogger成为单例,但确保它获得一个文件名? 最佳答